import scrapy
from ..items import MovieCrapyItem

# scrapy + xpath


class MovieSpider(scrapy.Spider):
    name = "movie"
    # 允许爬取的域名
    allowed_domains = ["movie.douban.com"]
    # 爬取的入口url
    start_urls = ["https://movie.douban.com/"]

    # 解析爬取的响应
    def parse(self, response):
        # 解析电影名称
        # 匹配 id 为 "billboard" 的 div 标签下的 class 为 "billboard-bd" 的 a 标签下的文本
        # 这里返回的是一个列表
        # movies = response.xpath('//*[@id="billboard"]/div[@class="billboard-bd"]//a/text()')
        # 匹配 id 为 "billboard" 的 div 标签下的 class 为 "billboard-bd" 的 td 的 class 为 order 标签下的文本
        # numbers = response.xpath('//*[@id="billboard"]/div[@class="billboard-bd"]//td[@class="order"]/text()')

        # 匹配 id 为 "billboard" 的 div 标签下的 class 为 "billboard-bd" 的 tr 标签
        movies = response.xpath('//*[@id="billboard"]/div[@class="billboard-bd"]//tr')

        # 创建 item 实例对象
        item = MovieCrapyItem()

        # 遍历 movies 列表
        for movie in movies:
            # 匹配 td 标签 class 为 order 的文本
            item['number'] = movie.xpath('./td[@class="order"]/text()').get()
            # 匹配 td 标签 class 为 title 的文本
            item['name'] = movie.xpath('./td[@class="title"]/a/text()').get()
            # 传递 item 对象
            # yield 关键字会将 item 对象传递给引擎，引擎会将 item 对象交给管道处理
            yield item

